/**
 * T 继承 { id: string } 表示 T 要是一个对象 对象中要有id 且值是string类型
 * @param arr
 */
function sum<T extends { id: string }>(arr: T[]) {}

sum([{ id: "11", name: "333" }]);

// ====>>>> T extends U ? X : Y;  extends 表示 条件判断

// extends 表示 条件判断，当 T 是 string 类型 返回 true 否则返回fasle
type IsStirng<T> = T extends string ? true : false;
type N1 = IsStirng<number>; // false
type N2 = IsStirng<number | string>; // boolean
// = number | string extends string ? true : false;
// 等价于
// number extends string ? true : false; // false
// string extends string ? true : false; // true
// 所以综合返回就是  false | true => boolean

export {};
